package com.lingnan.service;

import com.lingnan.dto.ChatMessageDTO;
import com.lingnan.entity.po.ChatMessage;
import com.lingnan.entity.vo.ChatMessageVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 聊天消息服务接口
 */
public interface ChatMessageService {

    /**
     * 发送消息
     * @param dto 消息DTO对象
     * @param senderId 发送者ID
     * @param senderType 发送者类型
     */
    void sendMessage(ChatMessageDTO dto, Long senderId, Integer senderType);

    /**
     * 撤回消息
     * @param messageId 消息ID
     * @param operatorId 操作者ID
     */
    void withdrawMessage(Long messageId, Long operatorId);

    /**
     * 获取未读消息数量
     * @param userId 用户ID
     * @param userType 用户类型
     * @return 未读消息数量
     */
    int getUnreadCount(Long userId, Integer userType);



    /**
     * 获取最近消息
     * @param sessionId 会话ID
     * @param limit 获取数量
     * @return 消息列表
     */
    List<ChatMessage> getRecentMessages(Long sessionId, int limit);

    /**
     * 获取聊天会话历史
     * @param sessionId 会话ID
     * @param userId 当前用户ID
     * @param userType 当前用户类型
     * @return 聊天消息视图对象列表
     */
    List<ChatMessageVO> getChatHistory(Long sessionId, Long userId, Integer userType);

}